﻿using System;
using ASPNETVN.PORTAL.Components.UI;
using ASPNETVN.PORTAL.Components.Helpers;
using System.Web.UI.WebControls;
using System.Collections;
using ASPNETVN.PORTAL.Components.Configuration.Settings;
using ASPNETVN.PORTAL.Components.UI.DataTypes;

namespace ASPNETVN.PORTAL.Modules.ANNOUNCEMENT
{
    public enum ModulePages
    {
        Style1,
        Style2
    }

    public partial class Main : PortalModuleControl
    {
        public Main()
        {
            // Define an Array List
            ArrayList list1 = new ArrayList();

            // Sắp xếp theo cột.
            list1.Add(new ListItem("Top 3 records", "3"));
            list1.Add(new ListItem("Top 5 records", "5"));
            list1.Add(new ListItem("Top 10 records", "10"));
            list1.Add(new ListItem("Top 20 records", "20"));

            ModuleSettingItem itemSetting = new ModuleSettingItem(new CustomListDataType(list1, "Text", "Value"));
            itemSetting.Name = "Top records";
            itemSetting.Value = "5";
            itemSetting.Description = "Top records";
            itemSetting.SortOrder = 1;
            this.BaseSettings.Add("TopRecords", itemSetting);

            // Define an Array List
            ArrayList list = new ArrayList();
            list.Add(new ListItem("Style1", "Style1"));
            list.Add(new ListItem("Style2", "Style2"));

            itemSetting = new ModuleSettingItem(new CustomListDataType(list, "Text", "Value"));
            itemSetting.Value = "Style1";
            itemSetting.Name = "Hình thức hiển thị nội dung";
            itemSetting.Description = "Hình thức hiển thị nội dung";
            itemSetting.SortOrder = 10;
            this.BaseSettings.Add("DisplayStyle", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "100%";
            itemSetting.Name = "Chiều rộng của khung thông báo";
            itemSetting.Description = "Chiều rộng của khung thông báo";
            itemSetting.SortOrder = 20;
            this.BaseSettings.Add("ContainerWidth", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "200";
            itemSetting.Name = "Chiều cao của khung thông báo";
            itemSetting.Description = "Chiều cao của khung thông báo";
            itemSetting.SortOrder = 30;
            this.BaseSettings.Add("ContainerHeight", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "#FFFFFF";
            itemSetting.Name = "Màu nền của nội dung thông báo";
            itemSetting.Description = "Màu nền của nội dung thông báo";
            itemSetting.SortOrder = 40;
            this.BaseSettings.Add("BackgroundColor", itemSetting);
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this.ModuleTitle.AddUrl = HttpUrlBuilder.BuildAddEditUrl(this.ModuleID, 0, "AddEditItem");
            this.ModuleTitle.ManagerUrl = HttpUrlBuilder.BuildAddEditUrl(this.ModuleID, 0, "ItemManager");
        }

        private void LoadChildControl()
        {
            const string basePath = "~/Modules/ASPNETVN.PORTAL.Modules.ANNOUNCEMENT/";
            ModulePages page = (ModulePages)Enum.Parse(typeof(ModulePages), this.Settings["DisplayStyle"].ToString(), true);
            string src = string.Format("{0}Controls/{1}.ascx", basePath, page);
            ModulePage ctl = (ModulePage)this.LoadControl(src);
            ctl.ParentControl = this;
            ContentPane.Controls.Add(ctl);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
           this.LoadChildControl(); 
        }
    }
}